#include <stdio.h>
#include <stdlib.h>
int main()
{
    int arr[] = {1, 2, 3};
    int *p;
    // malloc返回值为void*，需要强制转换为对应类型的指针
    // malloc申请空间是以字节为单位，需要传递具体大小
    p = (int *)malloc(3 * sizeof(int));
    if (p == NULL)
    {
        printf("Memory allocation failed\n");
        return 1;
    }
    for (int i = 0; i < 3; i++)
    {
        p[i] = arr[i];
    }
    for (int i = 0; i < 3; i++)
    {
        printf("%d ", p[i]);
    }
    // 释放的一定是有效的申请过的地址
    // free(p+1); // 这样写是错误的
    free(p);
    return 0;
}